home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / IEditor / Include / IEditor.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-17  |  27.2 KB  |  1,010 lines

  1. #ifndef IEDITOR_H
  2. #define IEDITOR_H
  3.  
  4. /*
  5. ** InterfaceEditor definitions' file     **
  6. **                                       **
  7. ** ©1994-1996 Simone Tellini             **
  8. ** All Rights Reserved                   **
  9. **                                       **
  10. ** $VER: IEditor_Include 3.12 (5.12.96)  **
  11. */
  12.  
  13.  
  14. #ifndef EXEC_TYPES_H
  15. #include <exec/types.h>
  16. #endif
  17. #ifndef  EXEC_LISTS_H
  18. #include <exec/lists.h>
  19. #endif
  20. #ifndef EXEC_NODES_H
  21. #include <exec/nodes.h>
  22. #endif
  23. #ifndef GRAPHICS_TEXT_H
  24. #include <graphics/text.h>
  25. #endif
  26.  
  27.  
  28.  
  29.  
  30. /***********************************
  31. **  Values for Alloc/Free Object  **
  32. ***********************************/
  33.  
  34. #define     IE_WINDOW                   0
  35. #define     IE_GADGET                   1
  36. #define     IE_BOOLEAN                  2
  37. #define     IE_ITEM                     3
  38. #define     IE_BEVELBOX                 4
  39. #define     IE_WNDIMAGE                 5
  40. #define     IE_INTUITEXT                6
  41. #define     IE_IMAGE                    7
  42. #define     IE_MENUSUB                  8
  43. #define     IE_MENUITEM                 9
  44. #define     IE_MENUTITLE               10
  45. #define     IE_REXXCMD                 11
  46. #define     IE_WNDTOOPEN               12
  47. #define     IE_LIBRARY                 13
  48. #define     IE_GADGETBANK              14
  49. #define     IE_BGADGET                 15
  50. #define     IE_BOOPSI                  16
  51. #define     IE_BTAG                    17
  52. #define     IE_LOCALE_STRING           18
  53. #define     IE_LOCALE_LANGUAGE         19
  54. #define     IE_LOCALE_TRANSLATION      20
  55. #define     IE_ARRAY_NODE              21
  56.  
  57. #define     IE_LASTOBJ                 21
  58.  
  59.  
  60. /****************
  61. **  Expanders  **
  62. ****************/
  63.  
  64.  
  65.  
  66. #define MIN_IEX_ID  15      // minimum ID for an expander
  67.  
  68. struct IEXNode {
  69.     struct Node         Node;
  70.     struct Expander    *Base;
  71.     ULONG               ID;
  72.     STRPTR              Support;
  73.     UWORD               UseCount;
  74.     struct Node         Copy;
  75. };
  76.  
  77.  
  78. /*
  79.     Structure passed to AddARexxCmd
  80.  
  81.     AddARexxCmd will make a copy of the structure, which can be then
  82.     reused.
  83. */
  84.  
  85. struct ExCmdNode {
  86.     struct Node Node;
  87.     STRPTR      Template;
  88.     ULONG       ( *Routine )( __A0 ULONG *, __A1 struct RexxMsg *, __A2 struct IE_Data *, __D0 ULONG );
  89.                   /*  ArgArray      RexxMsg                IE Data                ID   */
  90.     ULONG       ID; /* leave empty */
  91. };
  92.  
  93.  
  94.  
  95.  
  96. /***********************************************
  97. **  Functions called by the source generator  **
  98. ***********************************************/
  99.  
  100. struct IEXSrcFun {
  101.     /*  write the globals variable */
  102.     void    ( *Globals )( __A0 struct GenFiles * );
  103.     /*  called in the GUI Setup function  */
  104.     void    ( *Setup )( __A0 struct GenFiles * );
  105.     /*  called in the GUI CloseDown function  */
  106.     void    ( *CloseDown )( __A0 struct GenFiles * );
  107.     /*  write the headers  */
  108.     void    ( *Headers )( __A0 struct GenFiles * );
  109.     /*  called in the Render routine  */
  110.     void    ( *RenderMinusZero )( __A0 struct GenFiles * );
  111.     void    ( *RenderPlusZero )( __A0 struct GenFiles * );
  112.     /*  OR the IDCMP passed with the ones you need  */
  113.     ULONG   ( *IDCMP )( __D0 ULONG );
  114.     /*  write your data  */
  115.     void    ( *Data )( __A0 struct GenFiles * );
  116.     /*  write your chip data  */
  117.     void    ( *ChipData )( __A0 struct GenFiles * );
  118.     /*  write your support routine(s) (if needed)  */
  119.     void    ( *Support )( __A0 struct GenFiles * );
  120.     /*  called in the Open<Window Label>Window routine  */
  121.     void    ( *OpenWnd )( __A0 struct GenFiles * );
  122.     /*  called in the Close<Window Label>Window routine  */
  123.     void    ( *CloseWnd )( __A0 struct GenFiles * );
  124. };
  125.  
  126.  
  127. /**************************************
  128. **  Support functions for expanders  **
  129. **************************************/
  130.  
  131. struct IEXFun {
  132.     /* Args:  UBYTE *Buffer                    */
  133.     void        ( *SplitLines )( __A0 UBYTE * );
  134.  
  135.     /* Args:  UBYTE *Buffer, STRPTR ID_string  */
  136.     STRPTR      ( *GetFirstLine )( __A0 UBYTE *, __A1 STRPTR );
  137.  
  138.     /* Args:  BPTR File, STRPTR String, struct Descriptor *Descriptors */
  139.     void        ( *WriteFormatted )( __D0 BPTR, __A0 STRPTR, __A1 struct Descriptor * );
  140.  
  141.     /* Args:  struct Expander *IEXBase, struct Node *GadgetKind */
  142.     BOOL        ( *AddGadgetKind )( __A0 struct Expander *, __A1 struct Node * );
  143.  
  144.     /* Args:  struct ExCmdNode *Command  */
  145.     BOOL        ( *AddARexxCmd )( __A0 struct ExCmdNode * );
  146. };
  147.  
  148.  
  149. /*********************************************
  150. **  Support functions for external modules  **
  151. *********************************************/
  152.  
  153. struct MiscFun {
  154.  
  155.     /* Args: struct TextAttr *FontToAdd                 */
  156.     struct TxtAttrNode *( *AddFont )( __A0 struct TextAttr * );
  157.  
  158.     /* Args: UBYTE *Text, BOOL Beep, ULONG CatNumber    */
  159.     /* Text - Will be displayed in IE's status bar      */
  160.     /* Beep - Set to TRUE if it is a warning message    */
  161.     /* CatNumber - Leave to 0                           */
  162.     void                ( *Status )( __A0 UBYTE *, __D0 BOOL, __D1 ULONG );
  163.  
  164.     /* Args: struct TxtAttrNode *FontToRemove           */
  165.     void                ( *RemoveFont )( __A0 struct TxtAttrNode * );
  166.  
  167.     /* Args:  UWORD Object type, see above              */
  168.     APTR                ( *AllocObject )( __D0 UWORD );
  169.     /* Args:  APTR Object, UWORD Object type            */
  170.     void                ( *FreeObject  )( __A0 APTR, __D0 UWORD );
  171.  
  172.     /* No Args:                                         */
  173.     struct GadgetInfo  *( *GetGadget )( void );
  174.  
  175.     /* Args:  struct MinList *Strings,  STRPTR String   */
  176.     struct LocaleStr   *( *FindString )( __A0 struct MinList *, __A1 STRPTR );
  177.  
  178.     /* Args:  struct MinList *Array, struct MinList *Array  */
  179.     struct ArrayNode   *( *FindArray )( __A0 struct MinList *, __A1 struct MinList * );
  180. };
  181.  
  182.  
  183.  
  184.  
  185.  
  186. /*******************************
  187. **  Internal data structures  **
  188. *******************************/
  189.  
  190. struct LocaleData {
  191.     STRPTR          Catalog;    /*  the name of the catalog to create  */
  192.     STRPTR          JoinFile;   /*  the file to prepend                */
  193.     STRPTR          BuiltIn;    /*  built-in language                  */
  194.     ULONG           Version;    /*  minimum catalog version required   */
  195.     struct MinList  ExtraStrings; /*  strings to put in the cd         */
  196.     struct MinList  Languages;  /*  catalog translations to create     */
  197.     struct MinList  Translations;
  198.     struct MinList  Arrays;
  199. };
  200.  
  201. struct LocaleStr {
  202.     struct Node     Node;
  203.     struct MinList  Translations;
  204.     TEXT            ID[30];
  205.     TEXT            String[1024];
  206. };
  207.  
  208. #define LOC_GUI     (1 << 0)        /* the strings is part of the GUI */
  209. #define LOC_FREE    (1 << 1)
  210.  
  211. struct LocaleLanguage {
  212.     struct Node     Node;
  213.     TEXT            Language[60];
  214.     TEXT            File[256];
  215. };
  216.  
  217. struct LocaleTranslation {
  218.     struct Node     Node;
  219.     STRPTR          Original;
  220.     STRPTR          String;
  221. };
  222.  
  223.  
  224. struct ArrayNode {
  225.         struct ArrayNode   *Next;
  226.         struct ArrayNode   *Prev;
  227.         UBYTE             **Array;
  228.         UBYTE               Label[80];
  229. };
  230.  
  231.  
  232.  
  233. /***************************
  234. **       Screen Info      **
  235. ***************************/
  236.  
  237. struct ScreenInfo {
  238.     APTR                Visual;     /* VisualInfo of IE's screen */
  239.     UWORD               YOffset;
  240.     struct TextAttr     NewFont;
  241.     UWORD               ScrAttrs;   /* see below SC_xxx */
  242.     UWORD               St_Left;
  243.     UWORD               St_Top;
  244.     UWORD               Type;
  245.     UBYTE              *FontScr;
  246.     UBYTE              *Title;
  247.     UBYTE              *PubName;
  248.     ULONG              *Tags;       /* point to a TagItem array */
  249.                     /* at the end of the file   */
  250.                     /* you'll find the index to */
  251.                     /* access the data          */
  252.     UWORD              *DriPens;    /* 12 dripens               */
  253.     struct Screen      *Screen;
  254.     UWORD               XOffset;
  255. };
  256.  
  257.  
  258. struct IE_Data {
  259.     UBYTE               flags;              /*  various flags  */
  260.     UBYTE               flags_2;            /*  see below      */
  261.     UBYTE               mainprefs;
  262.     UBYTE               SrcFlags;
  263.     UBYTE               MainProcFlags;
  264.     UBYTE               AsmPrefs;
  265.     UBYTE               AsmPrefs2;
  266.     UBYTE               C_Prefs;
  267.     struct GadgetInfo  *gad_id;             /* last selected gadget */
  268.     struct Window      *win_active;         /* active window        */
  269.     struct WindowInfo  *win_info;           /* active window info   */
  270.     APTR                colortable;
  271.     UWORD               win_open;
  272.     UWORD               num_win;
  273.     struct MinList      win_list;           /* window list */
  274.     struct MinList      FntLst;             /* font list   */
  275.     UWORD               NumImgs;
  276.     struct MinList      Img_List;           /* images list */
  277.     UBYTE              *ScreenName;         /* ^ to my pub name */
  278.     UBYTE              *ARexxPortName;
  279.     UWORD               NumLibs;
  280.     struct MinList      Libs_List;          /* libraries to open */
  281.     UWORD               NumWndTO;
  282.     struct MinList      WndTO_List;         /* windows to open   */
  283.     UWORD               NumRexxs;
  284.     struct MinList      Rexx_List;          /* rexx commands     */
  285.     struct ScreenInfo  *ScreenData;
  286.     struct MiscFun     *Functions;
  287.     UBYTE              *RexxExt;
  288.     UBYTE              *RexxPortName;
  289.     UBYTE              *ExtraProc;
  290.     struct UserData    *User;
  291.     UBYTE              *ChipString;         /* prefs for the */
  292.                         /* Asm generator */
  293.     UBYTE              *IntString;
  294.     UBYTE              *DosString;
  295.     UBYTE              *GfxString;
  296.     UBYTE              *GadString;
  297.     UBYTE              *FntString;
  298.     UBYTE              *RexxString;
  299.     struct LocaleData  *Locale;
  300.     struct IEXFun      *IEXFun;             /* for expanders */
  301.     APTR                UserData;           /* for expanders */
  302.     struct MinList      Expanders;
  303.     struct IEXSrcFun   *IEXSrcFun;          /* used by generators */
  304.     UBYTE              *SharedPort;
  305. };
  306.  
  307.  
  308. /***************
  309. **  ScrAttrs  **
  310. ***************/
  311.  
  312. #define SC_LEFT             (1<<0)
  313. #define SC_TOP              (1<<1)
  314. #define SC_SHOWTITLE        (1<<2)
  315. #define SC_BEHIND           (1<<3)
  316. #define SC_QUIET            (1<<4)
  317. #define SC_OVERSCAN         (1<<5)
  318. #define SC_FULLPALETTE      (1<<6)
  319. #define SC_ERRORCODE        (1<<7)
  320. #define SC_DRAGGABLE        (1<<8)
  321. #define SC_EXCLUSIVE        (1<<9)
  322. #define SC_SHAREPENS        (1<<10)
  323. #define SC_INTERLEAVED      (1<<11)
  324. #define SC_LIKEWORKBENCH    (1<<12)
  325. #define SC_MINIMIZEISG      (1<<13)
  326. #define SC_LOC_TITLE        (1<<14)     /*  Localize the screen title  */
  327.  
  328.  
  329.  
  330. struct UserData {
  331.     STRPTR  Name;
  332.     ULONG   Number;
  333. };
  334.  
  335.  
  336.  
  337. struct GadgetBank {
  338.     struct Node     Node;
  339.     struct MinList  Gadgets;        /*  list of BGadget nodes   */
  340.     TEXT            Label[ 60 ];
  341.     struct MinList  Storage;        /*  List of the gadgets of  */
  342.                     /*  the bank that can be    */
  343.                     /*  used by generators      */
  344.     UWORD           Count;          /*  # of stored gadgets     */
  345. };
  346.  
  347. struct BGadget {
  348.     struct BGadget     *Succ;
  349.     struct BGadget     *Pred;
  350.     struct GadgetInfo  *Gadget;
  351. };
  352.  
  353.  
  354. /* GadgetBank flags (stored in Node.ln_Type) */
  355.  
  356. #define GB_ONOPEN       (1<<0)  /* attach when opening the window */
  357. #define GB_REATTACH     (1<<1)  /*  PRIVATE  */
  358. #define GB_ATTACHED     (1<<2)  /* currently attached             */
  359.  
  360.  
  361.  
  362. /*****************
  363. **  WindowInfo  **
  364. *****************/
  365.  
  366.  
  367. struct WindowInfo {
  368.     APTR    wi_succ;
  369.     APTR    wi_pred;
  370.     UBYTE   wi_flags1;             /* see below  */
  371.     UBYTE   wi_flags2;
  372.     UBYTE  *wi_name;               /* point to Titolo  */
  373.     struct Window *wi_winptr;      /* Window ^  */
  374.     WORD    wi_Top;                /* window data  */
  375.     WORD    wi_Left;
  376.     UWORD   wi_Width;
  377.     UWORD   wi_Height;
  378.     WORD    wi_MinWidth;
  379.     WORD    wi_MaxWidth;
  380.     WORD    wi_MinHeight;
  381.     WORD    wi_MaxHeight;
  382.     UWORD   wi_InnerWidth;
  383.     UWORD   wi_InnerHeight;
  384.     WORD    wi_ZLeft;              /* zoom  */
  385.     WORD    wi_ZTop;
  386.     UWORD   wi_ZWidth;
  387.     UWORD   wi_ZHeight;
  388.     UWORD   wi_MouseQueue;
  389.     UWORD   wi_RptQueue;
  390.     ULONG   wi_Flags;
  391.     ULONG   wi_IDCMP;
  392.     ULONG   wi_Tags;               /* tags packed  */
  393.     UBYTE   wi_Titolo[120];
  394.     UBYTE   wi_TitoloSchermo[120];
  395.     UBYTE   wi_Label[40];
  396.     struct Gadget *wi_GList;       /* private  */
  397.     UWORD   wi_NumGads;            /* # of gadgets in this window  */
  398.     struct  MinList wi_Gadgets;
  399.     UWORD   wi_NumMenus;           /* # of menus  */
  400.     struct  MinList wi_Menus;
  401.     UWORD   wi_GadTypes[13];
  402.     UWORD   wi_NumBools;           /* # of boolean gadgets  */
  403.     UWORD   wi_NumKeys;            /* # of gadget activation keys  */
  404.     UWORD   wi_NumBoxes;           /* # of bevel boxes  */
  405.     struct  MinList wi_Boxes;
  406.     UWORD   wi_NumImages;
  407.     struct  MinList wi_Images;
  408.     UWORD   wi_NumTexts;
  409.     struct  MinList wi_ITexts;
  410.     APTR    wi_Lock;               /*  *** PRIVATE ***  */
  411.     UWORD   wi_NumObjects;         /* # of external objects */
  412.     UWORD   wi_NeedRender;         /* this window needs a Render routine */
  413.     UWORD   wi_NewGadID;           /*  *** PRIVATE ***  */
  414.     BOOL    wi_NoOpenWnd;          /* don't write the Open<label>Window */
  415.                        /* routine. It'll be written by an   */
  416.                        /* external module.                  */
  417.     UBYTE   wi_pad;
  418.     struct  MinList wi_GBanks;     /* Gadget banks */
  419.     UWORD   wi_NumGBanks;
  420. };
  421.  
  422.  
  423. /*****************************
  424. **  Window Flags  (flags1)  **
  425. *****************************/
  426.  
  427. #define W_APERTA        (1<<0)      /* currently open  */
  428. #define W_USA_INNER_W   (1<<1)      /* use InnerWidth in the src  */
  429. #define W_USA_INNER_H   (1<<2)      /* use InnerHeight in the src  */
  430. #define W_RIAPRI        (1<<3)      /* private  */
  431.  
  432. /******************
  433. **  Window Tags  **
  434. ******************/
  435.  
  436. #define W_SCREENTITLE   (1<<1)
  437. #define W_MOUSEQUEUE    (1<<2)
  438. #define W_RPTQUEUE      (1<<3)
  439. #define W_AUTOADJUST    (1<<4)
  440. #define W_FALLBACK      (1<<5)
  441. #define W_ZOOM          (1<<6)
  442. #define W_TABLETMESSAGE (1<<7)
  443. #define W_MENUHELP      (1<<8)
  444. #define W_NOTIFYDEPTH   (1<<9)
  445. #define W_SHARED_PORT   (1<<10)     /* use the shared port */
  446. #define W_BACKFILL      (1<<11)
  447.  
  448. #define W_LOC_TITLE     (1<<31)     /* localize its title  */
  449. #define W_LOC_SCRTITLE  (1<<30)     /* localize its screen title  */
  450. #define W_LOC_GADGETS   (1<<29)     /* localize its gadgets  */
  451. #define W_LOC_TEXTS     (1<<28)     /* localize its intuitexts  */
  452. #define W_LOC_MENUS     (1<<27)     /* localize its menus  */
  453.  
  454.  
  455. /* Menu Flags  ; not implemented yet
  456.  
  457. ; MF_NEWLOOK    EQU     0
  458. ; MF_ERROR      EQU     1
  459. ; MF_FRONTPEN   EQU     2
  460.  
  461. */
  462.  
  463. struct WndImages {
  464.     APTR                wim_Next;
  465.     APTR                wim_Prev;
  466.     WORD                wim_Left;
  467.     WORD                wim_Top;
  468.     UWORD               wim_Width;
  469.     UWORD               wim_Height;
  470.     UWORD               wim_Depth;
  471.     APTR                wim_Data;       /* ^ to image raw data  */
  472.     UBYTE               wim_PlanePick;
  473.     UBYTE               wim_PlaneOnOff;
  474.     APTR                wim_NextImage;  /* ^ to next image  */
  475.     struct ImageNode   *wim_ImageNode;  /* ^ to the original image node */
  476. };
  477.  
  478.  
  479. struct TxtAttrNode {
  480.     APTR    txa_Next;
  481.     APTR    txa_Prev;
  482.     APTR    txa_Ptr;
  483.     UWORD   txa_OpenCnt;
  484.     STRPTR  txa_FontName;   /* points to txa_Name...  */
  485.     UWORD   txa_Size;
  486.     UBYTE   txa_Style;
  487.     UBYTE   txa_Flags;
  488.     UBYTE   txa_Name[40];
  489.     UBYTE   txa_Label[50];
  490. };
  491.  
  492.  
  493. /* These structures are placed instead of GadgetInfo->g_Data, see below */
  494.  
  495. struct BK {                 /* Button and Checkbox Kind */
  496.     ULONG   D1;         /* Dx, Px are unused fields */
  497.     ULONG   D2;
  498.     ULONG   D3;
  499.     ULONG   D4;
  500.     ULONG   D5;
  501.     ULONG   D6;
  502.     ULONG   D7;
  503. };
  504.  
  505. struct IK {                 /* Integer Kind    */
  506.     LONG    Num;        /* Number          */
  507.     UWORD   MaxC;       /* Mx Chars        */
  508.     WORD    P2;
  509.     WORD    Just;       /* Justification   */
  510.     WORD    P3;
  511.     ULONG   D4;
  512.     ULONG   D5;
  513.     ULONG   D6;
  514.     ULONG   D7;
  515. };
  516.  
  517. struct LK {                 /* Listview Kind    */
  518.     UWORD   Top;        /* Top              */
  519.     UBYTE   MultiSelect;/* MultiSelect      */
  520.     UBYTE   P1;
  521.     UWORD   Vis;        /* Make Visible     */
  522.     WORD    P2;
  523.     UWORD   ScW;        /* Scroller Width   */
  524.     WORD    P3;
  525.     UWORD   Sel;        /* Selected         */
  526.     WORD    P4;
  527.     UWORD   Spc;        /* Spacing          */
  528.     WORD    P5;
  529.     UWORD   IH;         /* Item Height      */
  530.     WORD    P6;
  531.     WORD    MaxP;       /* Max Pen          */
  532.     WORD    P7;
  533. };
  534.  
  535. struct MK {                 /* MX Kind           */
  536.     UWORD   Act;        /* Active            */
  537.     WORD    P1;
  538.     UWORD   Spc;        /* Spacing           */
  539.     WORD    P2;
  540.     UWORD   TitPlc;     /* Title Place       */
  541.     WORD    P3;
  542.     UWORD   D4;
  543.     WORD    P4;
  544.     UWORD   D5;
  545.     WORD    P5;
  546.     UWORD   D6;
  547.     WORD    P6;
  548.     WORD    D7;
  549.     WORD    P7;
  550. };
  551.  
  552. struct NK {                 /* Number Kind         */
  553.     LONG    Num;        /* Number              */
  554.     BYTE    FPen;       /* Front Pen           */
  555.     BYTE    P2;
  556.     WORD    PP2;
  557.     BYTE    BPen;       /* Back Pen            */
  558.     BYTE    P3;
  559.     UWORD   Just;       /* Justification       */
  560.     ULONG   MNL;        /* Max Number Len      */
  561.     UBYTE   Format[12];
  562. };
  563.  
  564. struct CK {                 /* Cycle Kind          */
  565.     UWORD   Act;        /* Active              */
  566.     WORD    P1;
  567.     UWORD   D2;
  568.     WORD    P2;
  569.     WORD    D2;
  570.     WORD    P3;
  571.     ULONG   D4;
  572.     ULONG   D5;
  573.     ULONG   D6;
  574.     ULONG   D7;
  575. };
  576.  
  577. struct PK {                 /* Palette Kind  */
  578.     UWORD   Depth;      /* Depth  */
  579.     WORD    P1;
  580.     UBYTE   Color;      /* Color  */
  581.     BYTE    PP2;
  582.     WORD    P2;
  583.     UBYTE   ColOff;     /* Color Offset  */
  584.     BYTE    PP3;
  585.     WORD    P3;
  586.     UWORD   IW;         /* Indicator Width  */
  587.     WORD    P4;
  588.     UWORD   IH;         /* Indicator Height  */
  589.     WORD    P4;
  590.     UWORD   NumCol;     /* Num Colors  */
  591.     WORD    P6;
  592.     ULONG   D7;
  593. };
  594.  
  595. struct SK {                 /* Scroller Kind  */
  596.     UWORD   Top;        /* Top  */
  597.     WORD    p;
  598.     UWORD   Tot;        /* Total  */
  599.     WORD    P2;
  600.     UWORD   Vis;        /* Visible  */
  601.     WORD    P3;
  602.     UWORD   Arr;        /* Arrows  */
  603.     WORD    p4;
  604.     UWORD   Free;       /* Freedom  */
  605.     WORD    p5;
  606.     ULONG   D6;
  607.     ULONG   D7;
  608. };
  609.  
  610. struct SlK {                /* Slider Kind  */
  611.     WORD    Min;        /* Min  */
  612.     WORD    Max;        /* Max  */
  613.     WORD    Level;      /* Level  */
  614.     UWORD   MLL;        /* Max Level Len  */
  615.     UBYTE   LevPlc;     /* Level Place  */
  616.     UBYTE   Just;       /* Justification  */
  617.     UBYTE   Free;       /* Freedom  */
  618.     BYTE    p3;
  619.     ULONG   MPL;        /* Max Pixel Len  */
  620.     UBYTE   Format[12];
  621. };
  622.  
  623. struct StK {                /* String Kind  */
  624.     UWORD   MaxC;       /* Max Chars  */
  625.     UWORD   P1;
  626.     UWORD   Just;       /* Justification  */
  627.     WORD    P2;
  628.     WORD    d3;
  629.     WORD    P3;
  630.     ULONG   D4;
  631.     ULONG   D5;
  632.     ULONG   D6;
  633.     ULONG   D7;
  634. };
  635.  
  636. struct TK {                 /* Text Kind  */
  637.     WORD    FPen;       /* Front Pen  */
  638.     WORD    p1;
  639.     WORD    BPen;       /* Back Pen  */
  640.     WORD    P2;
  641.     WORD    Just;       /* Justification  */
  642.     WORD    P3;
  643.     ULONG   D4;
  644.     ULONG   D5;
  645.     ULONG   D6;
  646.     ULONG   D7;
  647. };
  648.  
  649. struct GadgetInfo {
  650.     struct  Node g_Node;
  651.     UWORD   g_Kind;         /* gadget kind  */
  652.     UBYTE   g_flags2;
  653.     UBYTE   g_Key;
  654.     struct TxtAttrNode *g_Font;
  655.     UBYTE   g_Titolo[80];   /* title  */
  656.     UBYTE   g_Label[40];    /* label  */
  657.     APTR    g_ExtraMem;     /* private  */
  658.     WORD    g_Left;         /* structure NewGadget  */
  659.     WORD    g_Top;
  660.     UWORD   g_Width;
  661.     UWORD   g_Height;
  662.     APTR    g_GadgetText;
  663.     APTR    g_TextAttr;
  664.     WORD    g_GadgetID;
  665.     LONG    g_Flags;
  666.     APTR    g_VisualInfo;
  667.     APTR    g_UserData;
  668.     APTR    g_Ptr;          /* private  */
  669.     ULONG   g_Tags;         /* tags  */
  670.     struct BK g_Data;       /* various data  */
  671.     UWORD   g_NumScelte;    /* items if MX, LISTVIEW or CYCLE  */
  672.     struct MinList g_Scelte;
  673. };
  674.  
  675.  
  676.  
  677.  
  678. /********************
  679. **  Gadgets flags  **
  680. ********************/
  681.  
  682. #define G_ATTIVO            (1<<1)      /* the object is selected            */
  683. #define G_CONTORNO          (1<<2)      /* *** PRIVATE ***                   */
  684. #define G_WAS_ACTIVE        (1<<3)      /* *** PRIVATE ***                   */
  685. #define G_CARICATO          (1<<4)      /* *** PRIVATE ***                   */
  686. #define G_CLICKED           (1<<5)      /* needs a <Label>Clicked routine    */
  687. #define G_KEYPRESSED        (1<<6)      /* needs a <Label>KeyPressed routine */
  688. #define G_NO_TEMPLATE       (1<<7)      /* template already written          */
  689.  
  690.  
  691.  
  692. /*************************
  693. **  Extra Gadget types  **
  694. *************************/
  695.  
  696. #define BOOLEAN             14
  697.  
  698. struct BooleanInfo {
  699.     struct Node b_Node;
  700.     UWORD               b_Kind;         /* always = BOOLEAN  */
  701.     UBYTE               b_flags2;
  702.     UBYTE               b_Pad;
  703.     struct TxtAttrNode *b_Font;
  704.     UBYTE               b_Titolo[80];   /* title  */
  705.     UBYTE               b_Label[40];    /* label  */
  706.     struct Gadget      *b_NextGadget;
  707.     WORD                b_Left;         /* structure Gadget  */
  708.     WORD                b_Top;
  709.     UWORD               b_Width;
  710.     UWORD               b_Height;
  711.     UWORD               b_Flags;
  712.     UWORD               b_Activation;
  713.     UWORD               b_GadgetType;   /* always = GTYP_BOOLGADGET  */
  714.     struct Image       *b_GadgetRender;
  715.     struct Image       *b_SelectRender;
  716.     struct IntuiText   *b_GadgetText;
  717.     LONG                b_MutualExclude;
  718.     APTR                b_SpecialInfo;
  719.     WORD                b_GadgetID;
  720.     APTR                b_UserData;
  721.     BYTE                b_FrontPen;     /* IntuiText structure  */
  722.     BYTE                b_BackPen;
  723.     BYTE                b_DrawMode;
  724.     BYTE                b_AdjustToWord;
  725.     WORD                b_TxtLeft;
  726.     WORD                b_TxtTop;
  727.     APTR                b_TextFont;
  728.     UBYTE              *b_Text;
  729.     APTR                b_NextText;     /* always = NULL  */
  730. };
  731.  
  732.  
  733. /* Boolean Gadget Flags  */
  734.  
  735. #define B_TEXT          (1<<0)
  736.  
  737.  
  738.  
  739. /******************************
  740. **  BOOPSI object structure  **
  741. ******************************/
  742.  
  743.  
  744. struct BOOPSIInfo {
  745.     struct Node         Node;
  746.     UWORD               Kind;         /* gadget kind  */
  747.     UBYTE               Flags;
  748.     UBYTE               Key;
  749.     struct TxtAttrNode *Font;
  750.     UBYTE               Title[80];
  751.     UBYTE               Label[40];
  752.     APTR                User;
  753.     WORD                Left;
  754.     WORD                Top;
  755.     UWORD               Width;
  756.     UWORD               Height;
  757.     struct MinList      Tags;
  758. };
  759.  
  760.  
  761. struct BTag {
  762.     struct BTag    *Succ, *Pred;
  763.     UBYTE           Type;           /* see expanders.h                  */
  764.     UBYTE           BoolValue;      /* value for TT_BOOL                */
  765.     STRPTR          Name;
  766.     ULONG           Value;          /* value for TT_BYTE, WORD, LONG    */
  767.     struct MinList  Items;          /* value for TT_#?_PTR, LIST        */
  768.     TEXT            String[256];
  769. };
  770.  
  771.  
  772.  
  773.  
  774.  
  775. /* This is for MX, LIST and CYCLE gadgets (or others that have items)  */
  776.  
  777. struct GadgetScelta {
  778.     struct Node     gs_Node;
  779.     UBYTE           gs_Testo[40];   /* text of item  */
  780. };
  781.  
  782.  
  783.  
  784.  
  785. struct ImageNode {
  786.     struct Node in_Node;
  787.     WORD    in_Left;        /* always set to 0, 0  */
  788.     WORD    in_Top;
  789.     UWORD   in_Width;
  790.     UWORD   in_Height;
  791.     UWORD   in_Depth;
  792.     APTR    in_Data;        /* ^ to image raw data  */
  793.     UBYTE   in_PlanePick;
  794.     UBYTE   in_PlaneOnOff;
  795.     APTR    in_NextImage;   /* ^ to next image, always NULL  */
  796.     UBYTE   in_Label[40];
  797.     ULONG   in_Size;        /* size of Data allocation  */
  798. };
  799.  
  800.  
  801.  
  802. struct MenuTitle {
  803.     struct Node mt_Node;
  804.     UBYTE   mt_Flags;       /* see M_xxx below  */
  805.     BYTE    mt_Pad;
  806.     UWORD   mt_NumItems;
  807.     struct MinList mt_Items;
  808.     UBYTE   mt_Text[100];
  809.     UBYTE   mt_Label[40];
  810. };
  811.  
  812.  
  813. struct _MenuItem {
  814.     struct Node min_Node;
  815.     UBYTE   min_Flags;      /* see M_xxx below  */
  816.     BYTE    min_Pad;
  817.     UBYTE   min_Text[100];
  818.     APTR    min_Image;
  819.     UBYTE   min_CommKey[16];
  820.     UBYTE   min_Label[40];
  821.     ULONG   min_MutualExclude;
  822.     UWORD   min_NumSubs;
  823.     struct  MinList min_Subs;
  824. };
  825.  
  826.  
  827. struct MenuSub {
  828.     struct Node msn_Node;
  829.     UBYTE   msn_Flags;      /* see M_xxx below  */
  830.     BYTE    msn_Pad;
  831.     UBYTE   msn_Text[100];
  832.     APTR    msn_Image;
  833.     UBYTE   msn_CommKey[16];
  834.     UBYTE   msn_Label[40];
  835.     ULONG   msn_MutualExclude;
  836. };
  837.  
  838.  
  839.  
  840. /*****************
  841. **  Menu flags  **
  842. *****************/
  843.  
  844. #define M_DISABLED          (1<<0)
  845. #define M_BARLABEL          (1<<1)
  846. #define M_CHECKIT           (1<<2)
  847. #define M_CHECKED           (1<<3)
  848. #define M_MENUTOGGLE        (1<<4)
  849.  
  850.  
  851.  
  852. struct BevelBoxNode {
  853.     APTR    bb_Next;
  854.     APTR    bb_Prev;
  855.     WORD    bb_Left;
  856.     WORD    bb_Top;
  857.     UWORD   bb_Width;
  858.     UWORD   bb_Height;
  859.     ULONG   bb_VITag;
  860.     ULONG   bb_VisualInfo;
  861.     ULONG   bb_RTag;
  862.     ULONG   bb_Recessed;
  863.     ULONG   bb_TTag;
  864.     ULONG   bb_FrameType;
  865.     ULONG   bb_TagEnd;
  866.     UBYTE   bb_Flags;
  867. };
  868.  
  869.  
  870. /* BevelBoxes's flags  -  PRIVATE  */
  871.  
  872. #define BB_SELECTED         (1<<0)
  873. #define BB_MAYBE            (1<<1)   /* maybe it's the one to active... */
  874. /* Flag 2 is equal to CONTORNO  */
  875.  
  876.  
  877.  
  878. struct ITextNode {
  879.     struct Node itn_Node;
  880.     BYTE    itn_FrontPen;
  881.     BYTE    itn_BackPen;
  882.     BYTE    itn_DrawMode;
  883.     BYTE    itn_AdjustToWord;
  884.     WORD    itn_LeftEdge;
  885.     WORD    itn_TopEdge;
  886.     struct TextAttr *itn_ITextFont;
  887.     APTR    itn_IText;
  888.     APTR    itn_NextText;
  889.     UBYTE   itn_Text[120];
  890.     struct TextAttr *itn_FontCopy;
  891. };
  892.  
  893.  
  894. /* IntuiText flags (stored in LN_TYPE)  */
  895.  
  896. #define IT_SCRFONT      (1<<0)      /* use the screen font  */
  897.  
  898.  
  899.  
  900. struct RexxNode {
  901.     struct Node rxn_Node;
  902.     UBYTE   rxn_Label[40];
  903.     UBYTE   rxn_Name[40];
  904.     UBYTE   rxn_Template[500];
  905. };
  906.  
  907.  
  908. struct LibNode {
  909.     struct Node lbn_Node;
  910.     UWORD   lbn_Version;
  911.     UBYTE   lbn_Name[60];
  912.     UBYTE   lbn_Base[60];
  913. };
  914.  
  915. /* Library flags (stored in LN_PRI)  */
  916.  
  917. #define L_FAIL          (1<<0)
  918.  
  919. struct WndToOpen {
  920.     struct Node wto_Node;
  921.     UBYTE   wto_Label[40];
  922. };
  923.  
  924.  
  925. /*********************************
  926. **  General Flags  ( flags_2 )  **
  927. *********************************/
  928.  
  929. #define         GENERASCR       (1<<1)  /* READ ONLY  */
  930.  
  931. /* ( flags ) - This can be set by loaders */
  932.  
  933. #define         NO_IEX          (1<<4)  /* set this if you didn't    */
  934.                     /* find an external module   */
  935. #define         NODISKFONT      (1<<7)  /* set this if you failed to */
  936.                     /* open a disk font          */
  937.  
  938. /*******************************
  939. **  C Preferences  (C_Prefs)  **
  940. *******************************/
  941.  
  942. #define GEN_TEMPLATE            (1<<0)  /* generate Templates for functions  */
  943. #define SMART_STR               (1<<1)  /* don't write a string twice        */
  944. #define ONLY_NEW_TMP            (1<<2)  /* write only the new templates      */
  945.  
  946. /**********************************
  947. **  Asm Preferences  (AsmPrefs)  **
  948. **********************************/
  949.  
  950. #define SEC_DATA            (1<<0)      /* create a DATA section            */
  951. #define SEC_BSS             (1<<1)      /* create a BSS section             */
  952. #define GAD_LABELS          (1<<2)      /* create a label for every gadget  */
  953.  
  954. /* Asm Preferences 2 (AsmPrefs2)  */
  955.  
  956. #define RAW_CODE            (1<<0)      /* generate RawCode                 */
  957.  
  958.  
  959. /**********************************************
  960. **  Source parameters  (C_Prefs & AsmPrefs)  **
  961. **********************************************/
  962.  
  963. #define INTUIMSG            (1<<7)      /* write an IntuiMsg for every window */
  964. #define CLICKED             (1<<6)      /* generate Clicked pointers          */
  965. #define IDCMP_HANDLER       (1<<5)      /* generate IDCMP Handlers            */
  966. #define KEY_HANDLER         (1<<4)      /* generate VanillaKey Handlers       */
  967. #define TO_LOWER            (1<<3)      /* activation key are lowercased      */
  968.  
  969. /* ( SrcFlags )  */
  970.  
  971. #define OPENDISKFONT        (1<<0)
  972. #define MAINPROC            (1<<1)
  973. #define LOCALIZE            (1<<2)      /* localize the gui                  */
  974. #define AREXX_CMD_LIST      (1<<3)      /* put ARexx commands in a list      */
  975. #define SHARED_PORT         (1<<4)      /* windows use a shared port         */
  976. #define FONTSENSITIVE       (1<<6)
  977.  
  978.  
  979. /********************
  980. **  MainProcFlags  **
  981. ********************/
  982.  
  983. #define MAIN_CTRL_C         (1<<0)      /* handle CTRL C                  */
  984. #define MAIN_OTHERBITS      (1<<1)
  985. #define MAIN_WB             (1<<2)      /* generate wbmain() entry-point  */
  986.  
  987.  
  988. /* This one is for my sources... I'm too lazy to delete it... ;-)  */
  989.  
  990. struct GXY {
  991.     UWORD   Width;
  992.     UWORD   Height;
  993.     BOOL    Resize;
  994. };
  995.  
  996.  
  997. /*****************************************
  998. **  Values index of ScreenData->Tags[]  **
  999. *****************************************/
  1000.  
  1001. #define     SCRWIDTH        1
  1002. #define     SCRHEIGHT       3
  1003. #define     SCRDEPTH        5
  1004. #define     SCRID           7       /* DisplayID    */
  1005. #define     SCRFNT          9       /* Don't touch! */
  1006. #define     SCROVERSCAN    11
  1007. #define     SCRAUTOSCROLL  13
  1008.  
  1009. #endif
  1010.